#include "lagrangequadrangle.h"


std::vector<double> lagrangequadrangle::getNodeCoordinates(int order)
{
     switch (order)
     {
          case 1:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0};
          case 2:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0};
          case 3:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.33333333333333333333, -1.0, 0.0, 0.33333333333333333333, -1.0, 0.0, 1.0, -0.33333333333333333333, 0.0, 1.0, 0.33333333333333333333, 0.0, 0.33333333333333333333, 1.0, 0.0, -0.33333333333333333333, 1.0, 0.0, -1.0, 0.33333333333333333333, 0.0, -1.0, -0.33333333333333333333, 0.0, -0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, 0.33333333333333333333, 0.0, -0.33333333333333333333, 0.33333333333333333333, 0.0};
          case 4:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.5, -1.0, 0.0, 0.0, -1.0, 0.0, 0.5, -1.0, 0.0, 1.0, -0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0, -0.5, 1.0, 0.0, -1.0, 0.5, 0.0, -1.0, 0.0, 0.0, -1.0, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0, 0.5, 0.5, 0.0, -0.5, 0.5, 0.0, 0.0, -0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, 0.0};
          case 5:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.6, -1.0, 0.0, -0.2, -1.0, 0.0, 0.2, -1.0, 0.0, 0.6, -1.0, 0.0, 1.0, -0.6, 0.0, 1.0, -0.2, 0.0, 1.0, 0.2, 0.0, 1.0, 0.6, 0.0, 0.6, 1.0, 0.0, 0.2, 1.0, 0.0, -0.2, 1.0, 0.0, -0.6, 1.0, 0.0, -1.0, 0.6, 0.0, -1.0, 0.2, 0.0, -1.0, -0.2, 0.0, -1.0, -0.6, 0.0, -0.6, -0.6, 0.0, 0.6, -0.6, 0.0, 0.6, 0.6, 0.0, -0.6, 0.6, 0.0, -0.2, -0.6, 0.0, 0.2, -0.6, 0.0, 0.6, -0.2, 0.0, 0.6, 0.2, 0.0, 0.2, 0.6, 0.0, -0.2, 0.6, 0.0, -0.6, 0.2, 0.0, -0.6, -0.2, 0.0, -0.2, -0.2, 0.0, 0.2, -0.2, 0.0, 0.2, 0.2, 0.0, -0.2, 0.2, 0.0};
          case 6:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.66666666666666666667, -1.0, 0.0, -0.33333333333333333333, -1.0, 0.0, 0.0, -1.0, 0.0, 0.33333333333333333333, -1.0, 0.0, 0.66666666666666666667, -1.0, 0.0, 1.0, -0.66666666666666666667, 0.0, 1.0, -0.33333333333333333333, 0.0, 1.0, 0.0, 0.0, 1.0, 0.33333333333333333333, 0.0, 1.0, 0.66666666666666666667, 0.0, 0.66666666666666666667, 1.0, 0.0, 0.33333333333333333333, 1.0, 0.0, 0.0, 1.0, 0.0, -0.33333333333333333333, 1.0, 0.0, -0.66666666666666666667, 1.0, 0.0, -1.0, 0.66666666666666666667, 0.0, -1.0, 0.33333333333333333333, 0.0, -1.0, 0.0, 0.0, -1.0, -0.33333333333333333333, 0.0, -1.0, -0.66666666666666666667, 0.0, -0.66666666666666666667, -0.66666666666666666667, 0.0, 0.66666666666666666667, -0.66666666666666666667, 0.0, 0.66666666666666666667, 0.66666666666666666667, 0.0, -0.66666666666666666667, 0.66666666666666666667, 0.0, -0.33333333333333333333, -0.66666666666666666667, 0.0, 0.0, -0.66666666666666666667, 0.0, 0.33333333333333333333, -0.66666666666666666667, 0.0, 0.66666666666666666667, -0.33333333333333333333, 0.0, 0.66666666666666666667, 0.0, 0.0, 0.66666666666666666667, 0.33333333333333333333, 0.0, 0.33333333333333333333, 0.66666666666666666667, 0.0, 0.0, 0.66666666666666666667, 0.0, -0.33333333333333333333, 0.66666666666666666667, 0.0, -0.66666666666666666667, 0.33333333333333333333, 0.0, -0.66666666666666666667, 0.0, 0.0, -0.66666666666666666667, -0.33333333333333333333, 0.0, -0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, 0.33333333333333333333, 0.0, -0.33333333333333333333, 0.33333333333333333333, 0.0, 0.0, -0.33333333333333333333, 0.0, 0.33333333333333333333, 0.0, 0.0, 0.0, 0.33333333333333333333, 0.0, -0.33333333333333333333, 0.0, 0.0, 0.0, 0.0, 0.0};
          case 7:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.71428571428571428571, -1.0, 0.0, -0.42857142857142857143, -1.0, 0.0, -0.14285714285714285714, -1.0, 0.0, 0.14285714285714285714, -1.0, 0.0, 0.42857142857142857143, -1.0, 0.0, 0.71428571428571428571, -1.0, 0.0, 1.0, -0.71428571428571428571, 0.0, 1.0, -0.42857142857142857143, 0.0, 1.0, -0.14285714285714285714, 0.0, 1.0, 0.14285714285714285714, 0.0, 1.0, 0.42857142857142857143, 0.0, 1.0, 0.71428571428571428571, 0.0, 0.71428571428571428571, 1.0, 0.0, 0.42857142857142857143, 1.0, 0.0, 0.14285714285714285714, 1.0, 0.0, -0.14285714285714285714, 1.0, 0.0, -0.42857142857142857143, 1.0, 0.0, -0.71428571428571428571, 1.0, 0.0, -1.0, 0.71428571428571428571, 0.0, -1.0, 0.42857142857142857143, 0.0, -1.0, 0.14285714285714285714, 0.0, -1.0, -0.14285714285714285714, 0.0, -1.0, -0.42857142857142857143, 0.0, -1.0, -0.71428571428571428571, 0.0, -0.71428571428571428571, -0.71428571428571428571, 0.0, 0.71428571428571428571, -0.71428571428571428571, 0.0, 0.71428571428571428571, 0.71428571428571428571, 0.0, -0.71428571428571428571, 0.71428571428571428571, 0.0, -0.42857142857142857143, -0.71428571428571428571, 0.0, -0.14285714285714285714, -0.71428571428571428571, 0.0, 0.14285714285714285714, -0.71428571428571428571, 0.0, 0.42857142857142857143, -0.71428571428571428571, 0.0, 0.71428571428571428571, -0.42857142857142857143, 0.0, 0.71428571428571428571, -0.14285714285714285714, 0.0, 0.71428571428571428571, 0.14285714285714285714, 0.0, 0.71428571428571428571, 0.42857142857142857143, 0.0, 0.42857142857142857143, 0.71428571428571428571, 0.0, 0.14285714285714285714, 0.71428571428571428571, 0.0, -0.14285714285714285714, 0.71428571428571428571, 0.0, -0.42857142857142857143, 0.71428571428571428571, 0.0, -0.71428571428571428571, 0.42857142857142857143, 0.0, -0.71428571428571428571, 0.14285714285714285714, 0.0, -0.71428571428571428571, -0.14285714285714285714, 0.0, -0.71428571428571428571, -0.42857142857142857143, 0.0, -0.42857142857142857143, -0.42857142857142857143, 0.0, 0.42857142857142857143, -0.42857142857142857143, 0.0, 0.42857142857142857143, 0.42857142857142857143, 0.0, -0.42857142857142857143, 0.42857142857142857143, 0.0, -0.14285714285714285714, -0.42857142857142857143, 0.0, 0.14285714285714285714, -0.42857142857142857143, 0.0, 0.42857142857142857143, -0.14285714285714285714, 0.0, 0.42857142857142857143, 0.14285714285714285714, 0.0, 0.14285714285714285714, 0.42857142857142857143, 0.0, -0.14285714285714285714, 0.42857142857142857143, 0.0, -0.42857142857142857143, 0.14285714285714285714, 0.0, -0.42857142857142857143, -0.14285714285714285714, 0.0, -0.14285714285714285714, -0.14285714285714285714, 0.0, 0.14285714285714285714, -0.14285714285714285714, 0.0, 0.14285714285714285714, 0.14285714285714285714, 0.0, -0.14285714285714285714, 0.14285714285714285714, 0.0};
          case 8:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.75, -1.0, 0.0, -0.5, -1.0, 0.0, -0.25, -1.0, 0.0, 0.0, -1.0, 0.0, 0.25, -1.0, 0.0, 0.5, -1.0, 0.0, 0.75, -1.0, 0.0, 1.0, -0.75, 0.0, 1.0, -0.5, 0.0, 1.0, -0.25, 0.0, 1.0, 0.0, 0.0, 1.0, 0.25, 0.0, 1.0, 0.5, 0.0, 1.0, 0.75, 0.0, 0.75, 1.0, 0.0, 0.5, 1.0, 0.0, 0.25, 1.0, 0.0, 0.0, 1.0, 0.0, -0.25, 1.0, 0.0, -0.5, 1.0, 0.0, -0.75, 1.0, 0.0, -1.0, 0.75, 0.0, -1.0, 0.5, 0.0, -1.0, 0.25, 0.0, -1.0, 0.0, 0.0, -1.0, -0.25, 0.0, -1.0, -0.5, 0.0, -1.0, -0.75, 0.0, -0.75, -0.75, 0.0, 0.75, -0.75, 0.0, 0.75, 0.75, 0.0, -0.75, 0.75, 0.0, -0.5, -0.75, 0.0, -0.25, -0.75, 0.0, 0.0, -0.75, 0.0, 0.25, -0.75, 0.0, 0.5, -0.75, 0.0, 0.75, -0.5, 0.0, 0.75, -0.25, 0.0, 0.75, 0.0, 0.0, 0.75, 0.25, 0.0, 0.75, 0.5, 0.0, 0.5, 0.75, 0.0, 0.25, 0.75, 0.0, 0.0, 0.75, 0.0, -0.25, 0.75, 0.0, -0.5, 0.75, 0.0, -0.75, 0.5, 0.0, -0.75, 0.25, 0.0, -0.75, 0.0, 0.0, -0.75, -0.25, 0.0, -0.75, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0, 0.5, 0.5, 0.0, -0.5, 0.5, 0.0, -0.25, -0.5, 0.0, 0.0, -0.5, 0.0, 0.25, -0.5, 0.0, 0.5, -0.25, 0.0, 0.5, 0.0, 0.0, 0.5, 0.25, 0.0, 0.25, 0.5, 0.0, 0.0, 0.5, 0.0, -0.25, 0.5, 0.0, -0.5, 0.25, 0.0, -0.5, 0.0, 0.0, -0.5, -0.25, 0.0, -0.25, -0.25, 0.0, 0.25, -0.25, 0.0, 0.25, 0.25, 0.0, -0.25, 0.25, 0.0, 0.0, -0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.25, 0.0, -0.25, 0.0, 0.0, 0.0, 0.0, 0.0};
          case 9:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.77777777777777777778, -1.0, 0.0, -0.55555555555555555556, -1.0, 0.0, -0.33333333333333333333, -1.0, 0.0, -0.11111111111111111111, -1.0, 0.0, 0.11111111111111111111, -1.0, 0.0, 0.33333333333333333333, -1.0, 0.0, 0.55555555555555555556, -1.0, 0.0, 0.77777777777777777778, -1.0, 0.0, 1.0, -0.77777777777777777778, 0.0, 1.0, -0.55555555555555555556, 0.0, 1.0, -0.33333333333333333333, 0.0, 1.0, -0.11111111111111111111, 0.0, 1.0, 0.11111111111111111111, 0.0, 1.0, 0.33333333333333333333, 0.0, 1.0, 0.55555555555555555556, 0.0, 1.0, 0.77777777777777777778, 0.0, 0.77777777777777777778, 1.0, 0.0, 0.55555555555555555556, 1.0, 0.0, 0.33333333333333333333, 1.0, 0.0, 0.11111111111111111111, 1.0, 0.0, -0.11111111111111111111, 1.0, 0.0, -0.33333333333333333333, 1.0, 0.0, -0.55555555555555555556, 1.0, 0.0, -0.77777777777777777778, 1.0, 0.0, -1.0, 0.77777777777777777778, 0.0, -1.0, 0.55555555555555555556, 0.0, -1.0, 0.33333333333333333333, 0.0, -1.0, 0.11111111111111111111, 0.0, -1.0, -0.11111111111111111111, 0.0, -1.0, -0.33333333333333333333, 0.0, -1.0, -0.55555555555555555556, 0.0, -1.0, -0.77777777777777777778, 0.0, -0.77777777777777777778, -0.77777777777777777778, 0.0, 0.77777777777777777778, -0.77777777777777777778, 0.0, 0.77777777777777777778, 0.77777777777777777778, 0.0, -0.77777777777777777778, 0.77777777777777777778, 0.0, -0.55555555555555555556, -0.77777777777777777778, 0.0, -0.33333333333333333333, -0.77777777777777777778, 0.0, -0.11111111111111111111, -0.77777777777777777778, 0.0, 0.11111111111111111111, -0.77777777777777777778, 0.0, 0.33333333333333333333, -0.77777777777777777778, 0.0, 0.55555555555555555556, -0.77777777777777777778, 0.0, 0.77777777777777777778, -0.55555555555555555556, 0.0, 0.77777777777777777778, -0.33333333333333333333, 0.0, 0.77777777777777777778, -0.11111111111111111111, 0.0, 0.77777777777777777778, 0.11111111111111111111, 0.0, 0.77777777777777777778, 0.33333333333333333333, 0.0, 0.77777777777777777778, 0.55555555555555555556, 0.0, 0.55555555555555555556, 0.77777777777777777778, 0.0, 0.33333333333333333333, 0.77777777777777777778, 0.0, 0.11111111111111111111, 0.77777777777777777778, 0.0, -0.11111111111111111111, 0.77777777777777777778, 0.0, -0.33333333333333333333, 0.77777777777777777778, 0.0, -0.55555555555555555556, 0.77777777777777777778, 0.0, -0.77777777777777777778, 0.55555555555555555556, 0.0, -0.77777777777777777778, 0.33333333333333333333, 0.0, -0.77777777777777777778, 0.11111111111111111111, 0.0, -0.77777777777777777778, -0.11111111111111111111, 0.0, -0.77777777777777777778, -0.33333333333333333333, 0.0, -0.77777777777777777778, -0.55555555555555555556, 0.0, -0.55555555555555555556, -0.55555555555555555556, 0.0, 0.55555555555555555556, -0.55555555555555555556, 0.0, 0.55555555555555555556, 0.55555555555555555556, 0.0, -0.55555555555555555556, 0.55555555555555555556, 0.0, -0.33333333333333333333, -0.55555555555555555556, 0.0, -0.11111111111111111111, -0.55555555555555555556, 0.0, 0.11111111111111111111, -0.55555555555555555556, 0.0, 0.33333333333333333333, -0.55555555555555555556, 0.0, 0.55555555555555555556, -0.33333333333333333333, 0.0, 0.55555555555555555556, -0.11111111111111111111, 0.0, 0.55555555555555555556, 0.11111111111111111111, 0.0, 0.55555555555555555556, 0.33333333333333333333, 0.0, 0.33333333333333333333, 0.55555555555555555556, 0.0, 0.11111111111111111111, 0.55555555555555555556, 0.0, -0.11111111111111111111, 0.55555555555555555556, 0.0, -0.33333333333333333333, 0.55555555555555555556, 0.0, -0.55555555555555555556, 0.33333333333333333333, 0.0, -0.55555555555555555556, 0.11111111111111111111, 0.0, -0.55555555555555555556, -0.11111111111111111111, 0.0, -0.55555555555555555556, -0.33333333333333333333, 0.0, -0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, -0.33333333333333333333, 0.0, 0.33333333333333333333, 0.33333333333333333333, 0.0, -0.33333333333333333333, 0.33333333333333333333, 0.0, -0.11111111111111111111, -0.33333333333333333333, 0.0, 0.11111111111111111111, -0.33333333333333333333, 0.0, 0.33333333333333333333, -0.11111111111111111111, 0.0, 0.33333333333333333333, 0.11111111111111111111, 0.0, 0.11111111111111111111, 0.33333333333333333333, 0.0, -0.11111111111111111111, 0.33333333333333333333, 0.0, -0.33333333333333333333, 0.11111111111111111111, 0.0, -0.33333333333333333333, -0.11111111111111111111, 0.0, -0.11111111111111111111, -0.11111111111111111111, 0.0, 0.11111111111111111111, -0.11111111111111111111, 0.0, 0.11111111111111111111, 0.11111111111111111111, 0.0, -0.11111111111111111111, 0.11111111111111111111, 0.0};
          case 10:
               return std::vector<double> {-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -0.8, -1.0, 0.0, -0.6, -1.0, 0.0, -0.4, -1.0, 0.0, -0.2, -1.0, 0.0, 0.0, -1.0, 0.0, 0.2, -1.0, 0.0, 0.4, -1.0, 0.0, 0.6, -1.0, 0.0, 0.8, -1.0, 0.0, 1.0, -0.8, 0.0, 1.0, -0.6, 0.0, 1.0, -0.4, 0.0, 1.0, -0.2, 0.0, 1.0, 0.0, 0.0, 1.0, 0.2, 0.0, 1.0, 0.4, 0.0, 1.0, 0.6, 0.0, 1.0, 0.8, 0.0, 0.8, 1.0, 0.0, 0.6, 1.0, 0.0, 0.4, 1.0, 0.0, 0.2, 1.0, 0.0, 0.0, 1.0, 0.0, -0.2, 1.0, 0.0, -0.4, 1.0, 0.0, -0.6, 1.0, 0.0, -0.8, 1.0, 0.0, -1.0, 0.8, 0.0, -1.0, 0.6, 0.0, -1.0, 0.4, 0.0, -1.0, 0.2, 0.0, -1.0, 0.0, 0.0, -1.0, -0.2, 0.0, -1.0, -0.4, 0.0, -1.0, -0.6, 0.0, -1.0, -0.8, 0.0, -0.8, -0.8, 0.0, 0.8, -0.8, 0.0, 0.8, 0.8, 0.0, -0.8, 0.8, 0.0, -0.6, -0.8, 0.0, -0.4, -0.8, 0.0, -0.2, -0.8, 0.0, 0.0, -0.8, 0.0, 0.2, -0.8, 0.0, 0.4, -0.8, 0.0, 0.6, -0.8, 0.0, 0.8, -0.6, 0.0, 0.8, -0.4, 0.0, 0.8, -0.2, 0.0, 0.8, 0.0, 0.0, 0.8, 0.2, 0.0, 0.8, 0.4, 0.0, 0.8, 0.6, 0.0, 0.6, 0.8, 0.0, 0.4, 0.8, 0.0, 0.2, 0.8, 0.0, 0.0, 0.8, 0.0, -0.2, 0.8, 0.0, -0.4, 0.8, 0.0, -0.6, 0.8, 0.0, -0.8, 0.6, 0.0, -0.8, 0.4, 0.0, -0.8, 0.2, 0.0, -0.8, 0.0, 0.0, -0.8, -0.2, 0.0, -0.8, -0.4, 0.0, -0.8, -0.6, 0.0, -0.6, -0.6, 0.0, 0.6, -0.6, 0.0, 0.6, 0.6, 0.0, -0.6, 0.6, 0.0, -0.4, -0.6, 0.0, -0.2, -0.6, 0.0, 0.0, -0.6, 0.0, 0.2, -0.6, 0.0, 0.4, -0.6, 0.0, 0.6, -0.4, 0.0, 0.6, -0.2, 0.0, 0.6, 0.0, 0.0, 0.6, 0.2, 0.0, 0.6, 0.4, 0.0, 0.4, 0.6, 0.0, 0.2, 0.6, 0.0, 0.0, 0.6, 0.0, -0.2, 0.6, 0.0, -0.4, 0.6, 0.0, -0.6, 0.4, 0.0, -0.6, 0.2, 0.0, -0.6, 0.0, 0.0, -0.6, -0.2, 0.0, -0.6, -0.4, 0.0, -0.4, -0.4, 0.0, 0.4, -0.4, 0.0, 0.4, 0.4, 0.0, -0.4, 0.4, 0.0, -0.2, -0.4, 0.0, 0.0, -0.4, 0.0, 0.2, -0.4, 0.0, 0.4, -0.2, 0.0, 0.4, 0.0, 0.0, 0.4, 0.2, 0.0, 0.2, 0.4, 0.0, 0.0, 0.4, 0.0, -0.2, 0.4, 0.0, -0.4, 0.2, 0.0, -0.4, 0.0, 0.0, -0.4, -0.2, 0.0, -0.2, -0.2, 0.0, 0.2, -0.2, 0.0, 0.2, 0.2, 0.0, -0.2, 0.2, 0.0, 0.0, -0.2, 0.0, 0.2, 0.0, 0.0, 0.0, 0.2, 0.0, -0.2, 0.0, 0.0, 0.0, 0.0, 0.0};
          default:
               std::cout << "Error in 'lagrangequadrangle' namespace: coordinates of order 11 and above not defined" << std::endl;
               abort();
               break;
     }
}

std::vector<polynomial> lagrangequadrangle::getformfunctionpolynomials(int order)
{
     element quadrangle(3,order);
     std::vector<polynomial> formfunctionpoly(quadrangle.countCurvedNodes());

     switch (order)
     {
          case 1:
               formfunctionpoly[0].set({{{0.25}, {-0.25}}, {{-0.25}, {0.25}}});
               formfunctionpoly[1].set({{{0.25}, {-0.25}}, {{0.25}, {-0.25}}});
               formfunctionpoly[2].set({{{0.25}, {0.25}}, {{0.25}, {0.25}}});
               formfunctionpoly[3].set({{{0.25}, {0.25}}, {{-0.25}, {-0.25}}});
               break;
          case 2:
               formfunctionpoly[0].set({{{0.0}, {0.0}, {0.0}}, {{0.0}, {0.25}, {-0.25}}, {{0.0}, {-0.25}, {0.25}}});
               formfunctionpoly[1].set({{{0.0}, {0.0}, {0.0}}, {{0.0}, {-0.25}, {0.25}}, {{0.0}, {-0.25}, {0.25}}});
               formfunctionpoly[2].set({{{0.0}, {0.0}, {0.0}}, {{0.0}, {0.25}, {0.25}}, {{0.0}, {0.25}, {0.25}}});
               formfunctionpoly[3].set({{{0.0}, {0.0}, {0.0}}, {{0.0}, {-0.25}, {-0.25}}, {{0.0}, {0.25}, {0.25}}});
               formfunctionpoly[4].set({{{0.0}, {-0.5}, {0.5}}, {{0.0}, {0.0}, {0.0}}, {{0.0}, {0.5}, {-0.5}}});
               formfunctionpoly[5].set({{{0.0}, {0.0}, {0.0}}, {{0.5}, {0.0}, {-0.5}}, {{0.5}, {0.0}, {-0.5}}});
               formfunctionpoly[6].set({{{0.0}, {0.5}, {0.5}}, {{0.0}, {0.0}, {0.0}}, {{0.0}, {-0.5}, {-0.5}}});
               formfunctionpoly[7].set({{{0.0}, {0.0}, {0.0}}, {{-0.5}, {0.0}, {0.5}}, {{0.5}, {0.0}, {-0.5}}});
               formfunctionpoly[8].set({{{1.0}, {0.0}, {-1.0}}, {{0.0}, {0.0}, {0.0}}, {{-1.0}, {0.0}, {1.0}}});
               break;
          case 3:
               formfunctionpoly[0].set({{{0.00390625}, {-0.00390625}, {-0.03515625}, {0.03515625}}, {{-0.00390625}, {0.00390625}, {0.03515625}, {-0.03515625}}, {{-0.03515625}, {0.03515625}, {0.31640625}, {-0.31640625}}, {{0.03515625}, {-0.03515625}, {-0.31640625}, {0.31640625}}});
               formfunctionpoly[1].set({{{0.00390625}, {-0.00390625}, {-0.03515625}, {0.03515625}}, {{0.00390625}, {-0.00390625}, {-0.03515625}, {0.03515625}}, {{-0.03515625}, {0.03515625}, {0.31640625}, {-0.31640625}}, {{-0.03515625}, {0.03515625}, {0.31640625}, {-0.31640625}}});
               formfunctionpoly[2].set({{{0.00390625}, {0.00390625}, {-0.03515625}, {-0.03515625}}, {{0.00390625}, {0.00390625}, {-0.03515625}, {-0.03515625}}, {{-0.03515625}, {-0.03515625}, {0.31640625}, {0.31640625}}, {{-0.03515625}, {-0.03515625}, {0.31640625}, {0.31640625}}});
               formfunctionpoly[3].set({{{0.00390625}, {0.00390625}, {-0.03515625}, {-0.03515625}}, {{-0.00390625}, {-0.00390625}, {0.03515625}, {0.03515625}}, {{-0.03515625}, {-0.03515625}, {0.31640625}, {0.31640625}}, {{0.03515625}, {0.03515625}, {-0.31640625}, {-0.31640625}}});
               formfunctionpoly[4].set({{{-0.03515625}, {0.03515625}, {0.31640625}, {-0.31640625}}, {{0.10546875}, {-0.10546875}, {-0.94921875}, {0.94921875}}, {{0.03515625}, {-0.03515625}, {-0.31640625}, {0.31640625}}, {{-0.10546875}, {0.10546875}, {0.94921875}, {-0.94921875}}});
               formfunctionpoly[5].set({{{-0.03515625}, {0.03515625}, {0.31640625}, {-0.31640625}}, {{-0.10546875}, {0.10546875}, {0.94921875}, {-0.94921875}}, {{0.03515625}, {-0.03515625}, {-0.31640625}, {0.31640625}}, {{0.10546875}, {-0.10546875}, {-0.94921875}, {0.94921875}}});
               formfunctionpoly[6].set({{{-0.03515625}, {0.10546875}, {0.03515625}, {-0.10546875}}, {{-0.03515625}, {0.10546875}, {0.03515625}, {-0.10546875}}, {{0.31640625}, {-0.94921875}, {-0.31640625}, {0.94921875}}, {{0.31640625}, {-0.94921875}, {-0.31640625}, {0.94921875}}});
               formfunctionpoly[7].set({{{-0.03515625}, {-0.10546875}, {0.03515625}, {0.10546875}}, {{-0.03515625}, {-0.10546875}, {0.03515625}, {0.10546875}}, {{0.31640625}, {0.94921875}, {-0.31640625}, {-0.94921875}}, {{0.31640625}, {0.94921875}, {-0.31640625}, {-0.94921875}}});
               formfunctionpoly[8].set({{{-0.03515625}, {-0.03515625}, {0.31640625}, {0.31640625}}, {{-0.10546875}, {-0.10546875}, {0.94921875}, {0.94921875}}, {{0.03515625}, {0.03515625}, {-0.31640625}, {-0.31640625}}, {{0.10546875}, {0.10546875}, {-0.94921875}, {-0.94921875}}});
               formfunctionpoly[9].set({{{-0.03515625}, {-0.03515625}, {0.31640625}, {0.31640625}}, {{0.10546875}, {0.10546875}, {-0.94921875}, {-0.94921875}}, {{0.03515625}, {0.03515625}, {-0.31640625}, {-0.31640625}}, {{-0.10546875}, {-0.10546875}, {0.94921875}, {0.94921875}}});
               formfunctionpoly[10].set({{{-0.03515625}, {-0.10546875}, {0.03515625}, {0.10546875}}, {{0.03515625}, {0.10546875}, {-0.03515625}, {-0.10546875}}, {{0.31640625}, {0.94921875}, {-0.31640625}, {-0.94921875}}, {{-0.31640625}, {-0.94921875}, {0.31640625}, {0.94921875}}});
               formfunctionpoly[11].set({{{-0.03515625}, {0.10546875}, {0.03515625}, {-0.10546875}}, {{0.03515625}, {-0.10546875}, {-0.03515625}, {0.10546875}}, {{0.31640625}, {-0.94921875}, {-0.31640625}, {0.94921875}}, {{-0.31640625}, {0.94921875}, {0.31640625}, {-0.94921875}}});
               formfunctionpoly[12].set({{{0.31640625}, {-0.94921875}, {-0.31640625}, {0.94921875}}, {{-0.94921875}, {2.84765625}, {0.94921875}, {-2.84765625}}, {{-0.31640625}, {0.94921875}, {0.31640625}, {-0.94921875}}, {{0.94921875}, {-2.84765625}, {-0.94921875}, {2.84765625}}});
               formfunctionpoly[13].set({{{0.31640625}, {-0.94921875}, {-0.31640625}, {0.94921875}}, {{0.94921875}, {-2.84765625}, {-0.94921875}, {2.84765625}}, {{-0.31640625}, {0.94921875}, {0.31640625}, {-0.94921875}}, {{-0.94921875}, {2.84765625}, {0.94921875}, {-2.84765625}}});
               formfunctionpoly[14].set({{{0.31640625}, {0.94921875}, {-0.31640625}, {-0.94921875}}, {{0.94921875}, {2.84765625}, {-0.94921875}, {-2.84765625}}, {{-0.31640625}, {-0.94921875}, {0.31640625}, {0.94921875}}, {{-0.94921875}, {-2.84765625}, {0.94921875}, {2.84765625}}});
               formfunctionpoly[15].set({{{0.31640625}, {0.94921875}, {-0.31640625}, {-0.94921875}}, {{-0.94921875}, {-2.84765625}, {0.94921875}, {2.84765625}}, {{-0.31640625}, {-0.94921875}, {0.31640625}, {0.94921875}}, {{0.94921875}, {2.84765625}, {-0.94921875}, {-2.84765625}}});
               break;
          case 4:
               formfunctionpoly[0].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.027777777777777777778}, {-0.027777777777777777778}, {-0.11111111111111111111}, {0.11111111111111111111}}, {{0.0}, {-0.027777777777777777778}, {0.027777777777777777778}, {0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {-0.11111111111111111111}, {0.11111111111111111111}, {0.44444444444444444444}, {-0.44444444444444444444}}, {{0.0}, {0.11111111111111111111}, {-0.11111111111111111111}, {-0.44444444444444444444}, {0.44444444444444444444}}});
               formfunctionpoly[1].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.027777777777777777778}, {0.027777777777777777778}, {0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {-0.027777777777777777778}, {0.027777777777777777778}, {0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {0.11111111111111111111}, {-0.11111111111111111111}, {-0.44444444444444444444}, {0.44444444444444444444}}, {{0.0}, {0.11111111111111111111}, {-0.11111111111111111111}, {-0.44444444444444444444}, {0.44444444444444444444}}});
               formfunctionpoly[2].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.027777777777777777778}, {0.027777777777777777778}, {-0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {0.027777777777777777778}, {0.027777777777777777778}, {-0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {-0.11111111111111111111}, {-0.11111111111111111111}, {0.44444444444444444444}, {0.44444444444444444444}}, {{0.0}, {-0.11111111111111111111}, {-0.11111111111111111111}, {0.44444444444444444444}, {0.44444444444444444444}}});
               formfunctionpoly[3].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.027777777777777777778}, {-0.027777777777777777778}, {0.11111111111111111111}, {0.11111111111111111111}}, {{0.0}, {0.027777777777777777778}, {0.027777777777777777778}, {-0.11111111111111111111}, {-0.11111111111111111111}}, {{0.0}, {0.11111111111111111111}, {0.11111111111111111111}, {-0.44444444444444444444}, {-0.44444444444444444444}}, {{0.0}, {-0.11111111111111111111}, {-0.11111111111111111111}, {0.44444444444444444444}, {0.44444444444444444444}}});
               formfunctionpoly[4].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.22222222222222222222}, {0.22222222222222222222}, {0.88888888888888888889}, {-0.88888888888888888889}}, {{0.0}, {0.44444444444444444444}, {-0.44444444444444444444}, {-1.7777777777777777778}, {1.7777777777777777778}}, {{0.0}, {0.22222222222222222222}, {-0.22222222222222222222}, {-0.88888888888888888889}, {0.88888888888888888889}}, {{0.0}, {-0.44444444444444444444}, {0.44444444444444444444}, {1.7777777777777777778}, {-1.7777777777777777778}}});
               formfunctionpoly[5].set({{{0.0}, {0.16666666666666666667}, {-0.16666666666666666667}, {-0.66666666666666666667}, {0.66666666666666666667}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.83333333333333333333}, {0.83333333333333333333}, {3.3333333333333333333}, {-3.3333333333333333333}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.66666666666666666667}, {-0.66666666666666666667}, {-2.6666666666666666667}, {2.6666666666666666667}}});
               formfunctionpoly[6].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.22222222222222222222}, {-0.22222222222222222222}, {-0.88888888888888888889}, {0.88888888888888888889}}, {{0.0}, {0.44444444444444444444}, {-0.44444444444444444444}, {-1.7777777777777777778}, {1.7777777777777777778}}, {{0.0}, {-0.22222222222222222222}, {0.22222222222222222222}, {0.88888888888888888889}, {-0.88888888888888888889}}, {{0.0}, {-0.44444444444444444444}, {0.44444444444444444444}, {1.7777777777777777778}, {-1.7777777777777777778}}});
               formfunctionpoly[7].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.22222222222222222222}, {-0.44444444444444444444}, {-0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {0.22222222222222222222}, {-0.44444444444444444444}, {-0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {-0.88888888888888888889}, {1.7777777777777777778}, {0.88888888888888888889}, {-1.7777777777777777778}}, {{0.0}, {-0.88888888888888888889}, {1.7777777777777777778}, {0.88888888888888888889}, {-1.7777777777777777778}}});
               formfunctionpoly[8].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{-0.16666666666666666667}, {0.0}, {0.83333333333333333333}, {0.0}, {-0.66666666666666666667}}, {{-0.16666666666666666667}, {0.0}, {0.83333333333333333333}, {0.0}, {-0.66666666666666666667}}, {{0.66666666666666666667}, {0.0}, {-3.3333333333333333333}, {0.0}, {2.6666666666666666667}}, {{0.66666666666666666667}, {0.0}, {-3.3333333333333333333}, {0.0}, {2.6666666666666666667}}});
               formfunctionpoly[9].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.22222222222222222222}, {-0.44444444444444444444}, {0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {-0.22222222222222222222}, {-0.44444444444444444444}, {0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {0.88888888888888888889}, {1.7777777777777777778}, {-0.88888888888888888889}, {-1.7777777777777777778}}, {{0.0}, {0.88888888888888888889}, {1.7777777777777777778}, {-0.88888888888888888889}, {-1.7777777777777777778}}});
               formfunctionpoly[10].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.22222222222222222222}, {-0.22222222222222222222}, {0.88888888888888888889}, {0.88888888888888888889}}, {{0.0}, {-0.44444444444444444444}, {-0.44444444444444444444}, {1.7777777777777777778}, {1.7777777777777777778}}, {{0.0}, {0.22222222222222222222}, {0.22222222222222222222}, {-0.88888888888888888889}, {-0.88888888888888888889}}, {{0.0}, {0.44444444444444444444}, {0.44444444444444444444}, {-1.7777777777777777778}, {-1.7777777777777777778}}});
               formfunctionpoly[11].set({{{0.0}, {-0.16666666666666666667}, {-0.16666666666666666667}, {0.66666666666666666667}, {0.66666666666666666667}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.83333333333333333333}, {0.83333333333333333333}, {-3.3333333333333333333}, {-3.3333333333333333333}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.66666666666666666667}, {-0.66666666666666666667}, {2.6666666666666666667}, {2.6666666666666666667}}});
               formfunctionpoly[12].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.22222222222222222222}, {0.22222222222222222222}, {-0.88888888888888888889}, {-0.88888888888888888889}}, {{0.0}, {-0.44444444444444444444}, {-0.44444444444444444444}, {1.7777777777777777778}, {1.7777777777777777778}}, {{0.0}, {-0.22222222222222222222}, {-0.22222222222222222222}, {0.88888888888888888889}, {0.88888888888888888889}}, {{0.0}, {0.44444444444444444444}, {0.44444444444444444444}, {-1.7777777777777777778}, {-1.7777777777777777778}}});
               formfunctionpoly[13].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {0.22222222222222222222}, {0.44444444444444444444}, {-0.22222222222222222222}, {-0.44444444444444444444}}, {{0.0}, {-0.22222222222222222222}, {-0.44444444444444444444}, {0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {-0.88888888888888888889}, {-1.7777777777777777778}, {0.88888888888888888889}, {1.7777777777777777778}}, {{0.0}, {0.88888888888888888889}, {1.7777777777777777778}, {-0.88888888888888888889}, {-1.7777777777777777778}}});
               formfunctionpoly[14].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.16666666666666666667}, {0.0}, {-0.83333333333333333333}, {0.0}, {0.66666666666666666667}}, {{-0.16666666666666666667}, {0.0}, {0.83333333333333333333}, {0.0}, {-0.66666666666666666667}}, {{-0.66666666666666666667}, {0.0}, {3.3333333333333333333}, {0.0}, {-2.6666666666666666667}}, {{0.66666666666666666667}, {0.0}, {-3.3333333333333333333}, {0.0}, {2.6666666666666666667}}});
               formfunctionpoly[15].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-0.22222222222222222222}, {0.44444444444444444444}, {0.22222222222222222222}, {-0.44444444444444444444}}, {{0.0}, {0.22222222222222222222}, {-0.44444444444444444444}, {-0.22222222222222222222}, {0.44444444444444444444}}, {{0.0}, {0.88888888888888888889}, {-1.7777777777777777778}, {-0.88888888888888888889}, {1.7777777777777777778}}, {{0.0}, {-0.88888888888888888889}, {1.7777777777777777778}, {0.88888888888888888889}, {-1.7777777777777777778}}});
               formfunctionpoly[16].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {1.7777777777777777778}, {-3.5555555555555555556}, {-1.7777777777777777778}, {3.5555555555555555556}}, {{0.0}, {-3.5555555555555555556}, {7.1111111111111111111}, {3.5555555555555555556}, {-7.1111111111111111111}}, {{0.0}, {-1.7777777777777777778}, {3.5555555555555555556}, {1.7777777777777777778}, {-3.5555555555555555556}}, {{0.0}, {3.5555555555555555556}, {-7.1111111111111111111}, {-3.5555555555555555556}, {7.1111111111111111111}}});
               formfunctionpoly[17].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-1.7777777777777777778}, {3.5555555555555555556}, {1.7777777777777777778}, {-3.5555555555555555556}}, {{0.0}, {-3.5555555555555555556}, {7.1111111111111111111}, {3.5555555555555555556}, {-7.1111111111111111111}}, {{0.0}, {1.7777777777777777778}, {-3.5555555555555555556}, {-1.7777777777777777778}, {3.5555555555555555556}}, {{0.0}, {3.5555555555555555556}, {-7.1111111111111111111}, {-3.5555555555555555556}, {7.1111111111111111111}}});
               formfunctionpoly[18].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {1.7777777777777777778}, {3.5555555555555555556}, {-1.7777777777777777778}, {-3.5555555555555555556}}, {{0.0}, {3.5555555555555555556}, {7.1111111111111111111}, {-3.5555555555555555556}, {-7.1111111111111111111}}, {{0.0}, {-1.7777777777777777778}, {-3.5555555555555555556}, {1.7777777777777777778}, {3.5555555555555555556}}, {{0.0}, {-3.5555555555555555556}, {-7.1111111111111111111}, {3.5555555555555555556}, {7.1111111111111111111}}});
               formfunctionpoly[19].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-1.7777777777777777778}, {-3.5555555555555555556}, {1.7777777777777777778}, {3.5555555555555555556}}, {{0.0}, {3.5555555555555555556}, {7.1111111111111111111}, {-3.5555555555555555556}, {-7.1111111111111111111}}, {{0.0}, {1.7777777777777777778}, {3.5555555555555555556}, {-1.7777777777777777778}, {-3.5555555555555555556}}, {{0.0}, {-3.5555555555555555556}, {-7.1111111111111111111}, {3.5555555555555555556}, {7.1111111111111111111}}});
               formfunctionpoly[20].set({{{0.0}, {-1.3333333333333333333}, {2.6666666666666666667}, {1.3333333333333333333}, {-2.6666666666666666667}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {6.6666666666666666667}, {-13.333333333333333333}, {-6.6666666666666666667}, {13.333333333333333333}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-5.3333333333333333333}, {10.666666666666666667}, {5.3333333333333333333}, {-10.666666666666666667}}});
               formfunctionpoly[21].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{1.3333333333333333333}, {0.0}, {-6.6666666666666666667}, {0.0}, {5.3333333333333333333}}, {{2.6666666666666666667}, {0.0}, {-13.333333333333333333}, {0.0}, {10.666666666666666667}}, {{-1.3333333333333333333}, {0.0}, {6.6666666666666666667}, {0.0}, {-5.3333333333333333333}}, {{-2.6666666666666666667}, {0.0}, {13.333333333333333333}, {0.0}, {-10.666666666666666667}}});
               formfunctionpoly[22].set({{{0.0}, {1.3333333333333333333}, {2.6666666666666666667}, {-1.3333333333333333333}, {-2.6666666666666666667}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {-6.6666666666666666667}, {-13.333333333333333333}, {6.6666666666666666667}, {13.333333333333333333}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{0.0}, {5.3333333333333333333}, {10.666666666666666667}, {-5.3333333333333333333}, {-10.666666666666666667}}});
               formfunctionpoly[23].set({{{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{-1.3333333333333333333}, {0.0}, {6.6666666666666666667}, {0.0}, {-5.3333333333333333333}}, {{2.6666666666666666667}, {0.0}, {-13.333333333333333333}, {0.0}, {10.666666666666666667}}, {{1.3333333333333333333}, {0.0}, {-6.6666666666666666667}, {0.0}, {5.3333333333333333333}}, {{-2.6666666666666666667}, {0.0}, {13.333333333333333333}, {0.0}, {-10.666666666666666667}}});
               formfunctionpoly[24].set({{{1.0}, {0.0}, {-5.0}, {0.0}, {4.0}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{-5.0}, {0.0}, {25.0}, {0.0}, {-20.0}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}}, {{4.0}, {0.0}, {-20.0}, {0.0}, {16.0}}});
               break;
          case 5:
               formfunctionpoly[0].set({{{0.0001373291015625}, {-0.0001373291015625}, {-0.003814697265625}, {0.003814697265625}, {0.0095367431640625}, {-0.0095367431640625}}, {{-0.0001373291015625}, {0.0001373291015625}, {0.003814697265625}, {-0.003814697265625}, {-0.0095367431640625}, {0.0095367431640625}}, {{-0.003814697265625}, {0.003814697265625}, {0.10596381293402777778}, {-0.10596381293402777778}, {-0.26490953233506944444}, {0.26490953233506944444}}, {{0.003814697265625}, {-0.003814697265625}, {-0.10596381293402777778}, {0.10596381293402777778}, {0.26490953233506944444}, {-0.26490953233506944444}}, {{0.0095367431640625}, {-0.0095367431640625}, {-0.26490953233506944444}, {0.26490953233506944444}, {0.66227383083767361111}, {-0.66227383083767361111}}, {{-0.0095367431640625}, {0.0095367431640625}, {0.26490953233506944444}, {-0.26490953233506944444}, {-0.66227383083767361111}, {0.66227383083767361111}}});
               formfunctionpoly[1].set({{{0.0001373291015625}, {-0.0001373291015625}, {-0.003814697265625}, {0.003814697265625}, {0.0095367431640625}, {-0.0095367431640625}}, {{0.0001373291015625}, {-0.0001373291015625}, {-0.003814697265625}, {0.003814697265625}, {0.0095367431640625}, {-0.0095367431640625}}, {{-0.003814697265625}, {0.003814697265625}, {0.10596381293402777778}, {-0.10596381293402777778}, {-0.26490953233506944444}, {0.26490953233506944444}}, {{-0.003814697265625}, {0.003814697265625}, {0.10596381293402777778}, {-0.10596381293402777778}, {-0.26490953233506944444}, {0.26490953233506944444}}, {{0.0095367431640625}, {-0.0095367431640625}, {-0.26490953233506944444}, {0.26490953233506944444}, {0.66227383083767361111}, {-0.66227383083767361111}}, {{0.0095367431640625}, {-0.0095367431640625}, {-0.26490953233506944444}, {0.26490953233506944444}, {0.66227383083767361111}, {-0.66227383083767361111}}});
               formfunctionpoly[2].set({{{0.0001373291015625}, {0.0001373291015625}, {-0.003814697265625}, {-0.003814697265625}, {0.0095367431640625}, {0.0095367431640625}}, {{0.0001373291015625}, {0.0001373291015625}, {-0.003814697265625}, {-0.003814697265625}, {0.0095367431640625}, {0.0095367431640625}}, {{-0.003814697265625}, {-0.003814697265625}, {0.10596381293402777778}, {0.10596381293402777778}, {-0.26490953233506944444}, {-0.26490953233506944444}}, {{-0.003814697265625}, {-0.003814697265625}, {0.10596381293402777778}, {0.10596381293402777778}, {-0.26490953233506944444}, {-0.26490953233506944444}}, {{0.0095367431640625}, {0.0095367431640625}, {-0.26490953233506944444}, {-0.26490953233506944444}, {0.66227383083767361111}, {0.66227383083767361111}}, {{0.0095367431640625}, {0.0095367431640625}, {-0.26490953233506944444}, {-0.26490953233506944444}, {0.66227383083767361111}, {0.66227383083767361111}}});
               formfunctionpoly[3].set({{{0.0001373291015625}, {0.0001373291015625}, {-0.003814697265625}, {-0.003814697265625}, {0.0095367431640625}, {0.0095367431640625}}, {{-0.0001373291015625}, {-0.0001373291015625}, {0.003814697265625}, {0.003814697265625}, {-0.0095367431640625}, {-0.0095367431640625}}, {{-0.003814697265625}, {-0.003814697265625}, {0.10596381293402777778}, {0.10596381293402777778}, {-0.26490953233506944444}, {-0.26490953233506944444}}, {{0.003814697265625}, {0.003814697265625}, {-0.10596381293402777778}, {-0.10596381293402777778}, {0.26490953233506944444}, {0.26490953233506944444}}, {{0.0095367431640625}, {0.0095367431640625}, {-0.26490953233506944444}, {-0.26490953233506944444}, {0.66227383083767361111}, {0.66227383083767361111}}, {{-0.0095367431640625}, {-0.0095367431640625}, {0.26490953233506944444}, {0.26490953233506944444}, {-0.66227383083767361111}, {-0.66227383083767361111}}});
               formfunctionpoly[4].set({{{-0.0011444091796875}, {0.0011444091796875}, {0.031789143880208333333}, {-0.031789143880208333333}, {-0.079472859700520833333}, {0.079472859700520833333}}, {{0.0019073486328125}, {-0.0019073486328125}, {-0.052981906467013888889}, {0.052981906467013888889}, {0.13245476616753472222}, {-0.13245476616753472222}}, {{0.029754638671875}, {-0.029754638671875}, {-0.82651774088541666667}, {0.82651774088541666667}, {2.0662943522135416667}, {-2.0662943522135416667}}, {{-0.049591064453125}, {0.049591064453125}, {1.3775295681423611111}, {-1.3775295681423611111}, {-3.4438239203559027778}, {3.4438239203559027778}}, {{-0.0286102294921875}, {0.0286102294921875}, {0.79472859700520833333}, {-0.79472859700520833333}, {-1.9868214925130208333}, {1.9868214925130208333}}, {{0.0476837158203125}, {-0.0476837158203125}, {-1.3245476616753472222}, {1.3245476616753472222}, {3.3113691541883680556}, {-3.3113691541883680556}}});
               formfunctionpoly[5].set({{{0.006866455078125}, {-0.006866455078125}, {-0.19073486328125}, {0.19073486328125}, {0.476837158203125}, {-0.476837158203125}}, {{-0.034332275390625}, {0.034332275390625}, {0.95367431640625}, {-0.95367431640625}, {-2.384185791015625}, {2.384185791015625}}, {{-0.02593994140625}, {0.02593994140625}, {0.72055392795138888889}, {-0.72055392795138888889}, {-1.8013848198784722222}, {1.8013848198784722222}}, {{0.12969970703125}, {-0.12969970703125}, {-3.6027696397569444444}, {3.6027696397569444444}, {9.0069240993923611111}, {-9.0069240993923611111}}, {{0.019073486328125}, {-0.019073486328125}, {-0.52981906467013888889}, {0.52981906467013888889}, {1.3245476616753472222}, {-1.3245476616753472222}}, {{-0.095367431640625}, {0.095367431640625}, {2.6490953233506944444}, {-2.6490953233506944444}, {-6.6227383083767361111}, {6.6227383083767361111}}});
               formfunctionpoly[6].set({{{0.006866455078125}, {-0.006866455078125}, {-0.19073486328125}, {0.19073486328125}, {0.476837158203125}, {-0.476837158203125}}, {{0.034332275390625}, {-0.034332275390625}, {-0.95367431640625}, {0.95367431640625}, {2.384185791015625}, {-2.384185791015625}}, {{-0.02593994140625}, {0.02593994140625}, {0.72055392795138888889}, {-0.72055392795138888889}, {-1.8013848198784722222}, {1.8013848198784722222}}, {{-0.12969970703125}, {0.12969970703125}, {3.6027696397569444444}, {-3.6027696397569444444}, {-9.0069240993923611111}, {9.0069240993923611111}}, {{0.019073486328125}, {-0.019073486328125}, {-0.52981906467013888889}, {0.52981906467013888889}, {1.3245476616753472222}, {-1.3245476616753472222}}, {{0.095367431640625}, {-0.095367431640625}, {-2.6490953233506944444}, {2.6490953233506944444}, {6.6227383083767361111}, {-6.6227383083767361111}}});
               formfunctionpoly[7].set({{{-0.0011444091796875}, {0.0011444091796875}, {0.031789143880208333333}, {-0.031789143880208333333}, {-0.079472859700520833333}, {0.079472859700520833333}}, {{-0.0019073486328125}, {0.0019073486328125}, {0.052981906467013888889}, {-0.052981906467013888889}, {-0.13245476616753472222}, {0.13245476616753472222}}, {{0.029754638671875}, {-0.029754638671875}, {-0.82651774088541666667}, {0.82651774088541666667}, {2.0662943522135416667}, {-2.0662943522135416667}}, {{0.049591064453125}, {-0.049591064453125}, {-1.3775295681423611111}, {1.3775295681423611111}, {3.4438239203559027778}, {-3.4438239203559027778}}, {{-0.0286102294921875}, {0.0286102294921875}, {0.79472859700520833333}, {-0.79472859700520833333}, {-1.9868214925130208333}, {1.9868214925130208333}}, {{-0.0476837158203125}, {0.0476837158203125}, {1.3245476616753472222}, {-1.3245476616753472222}, {-3.3113691541883680556}, {3.3113691541883680556}}});
               formfunctionpoly[8].set({{{-0.0011444091796875}, {0.0019073486328125}, {0.029754638671875}, {-0.049591064453125}, {-0.0286102294921875}, {0.0476837158203125}}, {{-0.0011444091796875}, {0.0019073486328125}, {0.029754638671875}, {-0.049591064453125}, {-0.0286102294921875}, {0.0476837158203125}}, {{0.031789143880208333333}, {-0.052981906467013888889}, {-0.82651774088541666667}, {1.3775295681423611111}, {0.79472859700520833333}, {-1.3245476616753472222}}, {{0.031789143880208333333}, {-0.052981906467013888889}, {-0.82651774088541666667}, {1.3775295681423611111}, {0.79472859700520833333}, {-1.3245476616753472222}}, {{-0.079472859700520833333}, {0.13245476616753472222}, {2.0662943522135416667}, {-3.4438239203559027778}, {-1.9868214925130208333}, {3.3113691541883680556}}, {{-0.079472859700520833333}, {0.13245476616753472222}, {2.0662943522135416667}, {-3.4438239203559027778}, {-1.9868214925130208333}, {3.3113691541883680556}}});
               formfunctionpoly[9].set({{{0.006866455078125}, {-0.034332275390625}, {-0.02593994140625}, {0.12969970703125}, {0.019073486328125}, {-0.095367431640625}}, {{0.006866455078125}, {-0.034332275390625}, {-0.02593994140625}, {0.12969970703125}, {0.019073486328125}, {-0.095367431640625}}, {{-0.19073486328125}, {0.95367431640625}, {0.72055392795138888889}, {-3.6027696397569444444}, {-0.52981906467013888889}, {2.6490953233506944444}}, {{-0.19073486328125}, {0.95367431640625}, {0.72055392795138888889}, {-3.6027696397569444444}, {-0.52981906467013888889}, {2.6490953233506944444}}, {{0.476837158203125}, {-2.384185791015625}, {-1.8013848198784722222}, {9.0069240993923611111}, {1.3245476616753472222}, {-6.6227383083767361111}}, {{0.476837158203125}, {-2.384185791015625}, {-1.8013848198784722222}, {9.0069240993923611111}, {1.3245476616753472222}, {-6.6227383083767361111}}});
               formfunctionpoly[10].set({{{0.006866455078125}, {0.034332275390625}, {-0.02593994140625}, {-0.12969970703125}, {0.019073486328125}, {0.095367431640625}}, {{0.006866455078125}, {0.034332275390625}, {-0.02593994140625}, {-0.12969970703125}, {0.019073486328125}, {0.095367431640625}}, {{-0.19073486328125}, {-0.95367431640625}, {0.72055392795138888889}, {3.6027696397569444444}, {-0.52981906467013888889}, {-2.6490953233506944444}}, {{-0.19073486328125}, {-0.95367431640625}, {0.72055392795138888889}, {3.6027696397569444444}, {-0.52981906467013888889}, {-2.6490953233506944444}}, {{0.476837158203125}, {2.384185791015625}, {-1.8013848198784722222}, {-9.0069240993923611111}, {1.3245476616753472222}, {6.6227383083767361111}}, {{0.476837158203125}, {2.384185791015625}, {-1.8013848198784722222}, {-9.0069240993923611111}, {1.3245476616753472222}, {6.6227383083767361111}}});
               formfunctionpoly[11].set({{{-0.0011444091796875}, {-0.0019073486328125}, {0.029754638671875}, {0.049591064453125}, {-0.0286102294921875}, {-0.0476837158203125}}, {{-0.0011444091796875}, {-0.0019073486328125}, {0.029754638671875}, {0.049591064453125}, {-0.0286102294921875}, {-0.0476837158203125}}, {{0.031789143880208333333}, {0.052981906467013888889}, {-0.82651774088541666667}, {-1.3775295681423611111}, {0.79472859700520833333}, {1.3245476616753472222}}, {{0.031789143880208333333}, {0.052981906467013888889}, {-0.82651774088541666667}, {-1.3775295681423611111}, {0.79472859700520833333}, {1.3245476616753472222}}, {{-0.079472859700520833333}, {-0.13245476616753472222}, {2.0662943522135416667}, {3.4438239203559027778}, {-1.9868214925130208333}, {-3.3113691541883680556}}, {{-0.079472859700520833333}, {-0.13245476616753472222}, {2.0662943522135416667}, {3.4438239203559027778}, {-1.9868214925130208333}, {-3.3113691541883680556}}});
               formfunctionpoly[12].set({{{-0.0011444091796875}, {-0.0011444091796875}, {0.031789143880208333333}, {0.031789143880208333333}, {-0.079472859700520833333}, {-0.079472859700520833333}}, {{-0.0019073486328125}, {-0.0019073486328125}, {0.052981906467013888889}, {0.052981906467013888889}, {-0.13245476616753472222}, {-0.13245476616753472222}}, {{0.029754638671875}, {0.029754638671875}, {-0.82651774088541666667}, {-0.82651774088541666667}, {2.0662943522135416667}, {2.0662943522135416667}}, {{0.049591064453125}, {0.049591064453125}, {-1.3775295681423611111}, {-1.3775295681423611111}, {3.4438239203559027778}, {3.4438239203559027778}}, {{-0.0286102294921875}, {-0.0286102294921875}, {0.79472859700520833333}, {0.79472859700520833333}, {-1.9868214925130208333}, {-1.9868214925130208333}}, {{-0.0476837158203125}, {-0.0476837158203125}, {1.3245476616753472222}, {1.3245476616753472222}, {-3.3113691541883680556}, {-3.3113691541883680556}}});
               formfunctionpoly[13].set({{{0.006866455078125}, {0.006866455078125}, {-0.19073486328125}, {-0.19073486328125}, {0.476837158203125}, {0.476837158203125}}, {{0.034332275390625}, {0.034332275390625}, {-0.95367431640625}, {-0.95367431640625}, {2.384185791015625}, {2.384185791015625}}, {{-0.02593994140625}, {-0.02593994140625}, {0.72055392795138888889}, {0.72055392795138888889}, {-1.8013848198784722222}, {-1.8013848198784722222}}, {{-0.12969970703125}, {-0.12969970703125}, {3.6027696397569444444}, {3.6027696397569444444}, {-9.0069240993923611111}, {-9.0069240993923611111}}, {{0.019073486328125}, {0.019073486328125}, {-0.52981906467013888889}, {-0.52981906467013888889}, {1.3245476616753472222}, {1.3245476616753472222}}, {{0.095367431640625}, {0.095367431640625}, {-2.6490953233506944444}, {-2.6490953233506944444}, {6.6227383083767361111}, {6.6227383083767361111}}});
               formfunctionpoly[14].set({{{0.006866455078125}, {0.006866455078125}, {-0.19073486328125}, {-0.19073486328125}, {0.476837158203125}, {0.476837158203125}}, {{-0.034332275390625}, {-0.034332275390625}, {0.95367431640625}, {0.95367431640625}, {-2.384185791015625}, {-2.384185791015625}}, {{-0.02593994140625}, {-0.02593994140625}, {0.72055392795138888889}, {0.72055392795138888889}, {-1.8013848198784722222}, {-1.8013848198784722222}}, {{0.12969970703125}, {0.12969970703125}, {-3.6027696397569444444}, {-3.6027696397569444444}, {9.0069240993923611111}, {9.0069240993923611111}}, {{0.019073486328125}, {0.019073486328125}, {-0.52981906467013888889}, {-0.52981906467013888889}, {1.3245476616753472222}, {1.3245476616753472222}}, {{-0.095367431640625}, {-0.095367431640625}, {2.6490953233506944444}, {2.6490953233506944444}, {-6.6227383083767361111}, {-6.6227383083767361111}}});
               formfunctionpoly[15].set({{{-0.0011444091796875}, {-0.0011444091796875}, {0.031789143880208333333}, {0.031789143880208333333}, {-0.079472859700520833333}, {-0.079472859700520833333}}, {{0.0019073486328125}, {0.0019073486328125}, {-0.052981906467013888889}, {-0.052981906467013888889}, {0.13245476616753472222}, {0.13245476616753472222}}, {{0.029754638671875}, {0.029754638671875}, {-0.82651774088541666667}, {-0.82651774088541666667}, {2.0662943522135416667}, {2.0662943522135416667}}, {{-0.049591064453125}, {-0.049591064453125}, {1.3775295681423611111}, {1.3775295681423611111}, {-3.4438239203559027778}, {-3.4438239203559027778}}, {{-0.0286102294921875}, {-0.0286102294921875}, {0.79472859700520833333}, {0.79472859700520833333}, {-1.9868214925130208333}, {-1.9868214925130208333}}, {{0.0476837158203125}, {0.0476837158203125}, {-1.3245476616753472222}, {-1.3245476616753472222}, {3.3113691541883680556}, {3.3113691541883680556}}});
               formfunctionpoly[16].set({{{-0.0011444091796875}, {-0.0019073486328125}, {0.029754638671875}, {0.049591064453125}, {-0.0286102294921875}, {-0.0476837158203125}}, {{0.0011444091796875}, {0.0019073486328125}, {-0.029754638671875}, {-0.049591064453125}, {0.0286102294921875}, {0.0476837158203125}}, {{0.031789143880208333333}, {0.052981906467013888889}, {-0.82651774088541666667}, {-1.3775295681423611111}, {0.79472859700520833333}, {1.3245476616753472222}}, {{-0.031789143880208333333}, {-0.052981906467013888889}, {0.82651774088541666667}, {1.3775295681423611111}, {-0.79472859700520833333}, {-1.3245476616753472222}}, {{-0.079472859700520833333}, {-0.13245476616753472222}, {2.0662943522135416667}, {3.4438239203559027778}, {-1.9868214925130208333}, {-3.3113691541883680556}}, {{0.079472859700520833333}, {0.13245476616753472222}, {-2.0662943522135416667}, {-3.4438239203559027778}, {1.9868214925130208333}, {3.3113691541883680556}}});
               formfunctionpoly[17].set({{{0.006866455078125}, {0.034332275390625}, {-0.02593994140625}, {-0.12969970703125}, {0.019073486328125}, {0.095367431640625}}, {{-0.006866455078125}, {-0.034332275390625}, {0.02593994140625}, {0.12969970703125}, {-0.019073486328125}, {-0.095367431640625}}, {{-0.19073486328125}, {-0.95367431640625}, {0.72055392795138888889}, {3.6027696397569444444}, {-0.52981906467013888889}, {-2.6490953233506944444}}, {{0.19073486328125}, {0.95367431640625}, {-0.72055392795138888889}, {-3.6027696397569444444}, {0.52981906467013888889}, {2.6490953233506944444}}, {{0.476837158203125}, {2.384185791015625}, {-1.8013848198784722222}, {-9.0069240993923611111}, {1.3245476616753472222}, {6.6227383083767361111}}, {{-0.476837158203125}, {-2.384185791015625}, {1.8013848198784722222}, {9.0069240993923611111}, {-1.3245476616753472222}, {-6.6227383083767361111}}});
               formfunctionpoly[18].set({{{0.006866455078125}, {-0.034332275390625}, {-0.02593994140625}, {0.12969970703125}, {0.019073486328125}, {-0.095367431640625}}, {{-0.006866455078125}, {0.034332275390625}, {0.02593994140625}, {-0.12969970703125}, {-0.019073486328125}, {0.095367431640625}}, {{-0.19073486328125}, {0.95367431640625}, {0.72055392795138888889}, {-3.6027696397569444444}, {-0.52981906467013888889}, {2.6490953233506944444}}, {{0.19073486328125}, {-0.95367431640625}, {-0.72055392795138888889}, {3.6027696397569444444}, {0.52981906467013888889}, {-2.6490953233506944444}}, {{0.476837158203125}, {-2.384185791015625}, {-1.8013848198784722222}, {9.0069240993923611111}, {1.3245476616753472222}, {-6.6227383083767361111}}, {{-0.476837158203125}, {2.384185791015625}, {1.8013848198784722222}, {-9.0069240993923611111}, {-1.3245476616753472222}, {6.6227383083767361111}}});
               formfunctionpoly[19].set({{{-0.0011444091796875}, {0.0019073486328125}, {0.029754638671875}, {-0.049591064453125}, {-0.0286102294921875}, {0.0476837158203125}}, {{0.0011444091796875}, {-0.0019073486328125}, {-0.029754638671875}, {0.049591064453125}, {0.0286102294921875}, {-0.0476837158203125}}, {{0.031789143880208333333}, {-0.052981906467013888889}, {-0.82651774088541666667}, {1.3775295681423611111}, {0.79472859700520833333}, {-1.3245476616753472222}}, {{-0.031789143880208333333}, {0.052981906467013888889}, {0.82651774088541666667}, {-1.3775295681423611111}, {-0.79472859700520833333}, {1.3245476616753472222}}, {{-0.079472859700520833333}, {0.13245476616753472222}, {2.0662943522135416667}, {-3.4438239203559027778}, {-1.9868214925130208333}, {3.3113691541883680556}}, {{0.079472859700520833333}, {-0.13245476616753472222}, {-2.0662943522135416667}, {3.4438239203559027778}, {1.9868214925130208333}, {-3.3113691541883680556}}});
               formfunctionpoly[20].set({{{0.0095367431640625}, {-0.015894571940104166667}, {-0.247955322265625}, {0.41325887044270833333}, {0.2384185791015625}, {-0.39736429850260416667}}, {{-0.015894571940104166667}, {0.026490953233506944444}, {0.41325887044270833333}, {-0.68876478407118055556}, {-0.39736429850260416667}, {0.66227383083767361111}}, {{-0.247955322265625}, {0.41325887044270833333}, {6.44683837890625}, {-10.744730631510416667}, {-6.198883056640625}, {10.331471761067708333}}, {{0.41325887044270833333}, {-0.68876478407118055556}, {-10.744730631510416667}, {17.907884385850694444}, {10.331471761067708333}, {-17.219119601779513889}}, {{0.2384185791015625}, {-0.39736429850260416667}, {-6.198883056640625}, {10.331471761067708333}, {5.9604644775390625}, {-9.9341074625651041667}}, {{-0.39736429850260416667}, {0.66227383083767361111}, {10.331471761067708333}, {-17.219119601779513889}, {-9.9341074625651041667}, {16.556845770941840278}}});
               formfunctionpoly[21].set({{{0.0095367431640625}, {-0.015894571940104166667}, {-0.247955322265625}, {0.41325887044270833333}, {0.2384185791015625}, {-0.39736429850260416667}}, {{0.015894571940104166667}, {-0.026490953233506944444}, {-0.41325887044270833333}, {0.68876478407118055556}, {0.39736429850260416667}, {-0.66227383083767361111}}, {{-0.247955322265625}, {0.41325887044270833333}, {6.44683837890625}, {-10.744730631510416667}, {-6.198883056640625}, {10.331471761067708333}}, {{-0.41325887044270833333}, {0.68876478407118055556}, {10.744730631510416667}, {-17.907884385850694444}, {-10.331471761067708333}, {17.219119601779513889}}, {{0.2384185791015625}, {-0.39736429850260416667}, {-6.198883056640625}, {10.331471761067708333}, {5.9604644775390625}, {-9.9341074625651041667}}, {{0.39736429850260416667}, {-0.66227383083767361111}, {-10.331471761067708333}, {17.219119601779513889}, {9.9341074625651041667}, {-16.556845770941840278}}});
               formfunctionpoly[22].set({{{0.0095367431640625}, {0.015894571940104166667}, {-0.247955322265625}, {-0.41325887044270833333}, {0.2384185791015625}, {0.39736429850260416667}}, {{0.015894571940104166667}, {0.026490953233506944444}, {-0.41325887044270833333}, {-0.68876478407118055556}, {0.39736429850260416667}, {0.66227383083767361111}}, {{-0.247955322265625}, {-0.41325887044270833333}, {6.44683837890625}, {10.744730631510416667}, {-6.198883056640625}, {-10.331471761067708333}}, {{-0.41325887044270833333}, {-0.68876478407118055556}, {10.744730631510416667}, {17.907884385850694444}, {-10.331471761067708333}, {-17.219119601779513889}}, {{0.2384185791015625}, {0.39736429850260416667}, {-6.198883056640625}, {-10.331471761067708333}, {5.9604644775390625}, {9.9341074625651041667}}, {{0.39736429850260416667}, {0.66227383083767361111}, {-10.331471761067708333}, {-17.219119601779513889}, {9.9341074625651041667}, {16.556845770941840278}}});
               formfunctionpoly[23].set({{{0.0095367431640625}, {0.015894571940104166667}, {-0.247955322265625}, {-0.41325887044270833333}, {0.2384185791015625}, {0.39736429850260416667}}, {{-0.015894571940104166667}, {-0.026490953233506944444}, {0.41325887044270833333}, {0.68876478407118055556}, {-0.39736429850260416667}, {-0.66227383083767361111}}, {{-0.247955322265625}, {-0.41325887044270833333}, {6.44683837890625}, {10.744730631510416667}, {-6.198883056640625}, {-10.331471761067708333}}, {{0.41325887044270833333}, {0.68876478407118055556}, {-10.744730631510416667}, {-17.907884385850694444}, {10.331471761067708333}, {17.219119601779513889}}, {{0.2384185791015625}, {0.39736429850260416667}, {-6.198883056640625}, {-10.331471761067708333}, {5.9604644775390625}, {9.9341074625651041667}}, {{-0.39736429850260416667}, {-0.66227383083767361111}, {10.331471761067708333}, {17.219119601779513889}, {-9.9341074625651041667}, {-16.556845770941840278}}});
               formfunctionpoly[24].set({{{-0.057220458984375}, {0.095367431640625}, {1.48773193359375}, {-2.47955322265625}, {-1.430511474609375}, {2.384185791015625}}, {{0.286102294921875}, {-0.476837158203125}, {-7.43865966796875}, {12.39776611328125}, {7.152557373046875}, {-11.920928955078125}}, {{0.21616617838541666667}, {-0.36027696397569444444}, {-5.6203206380208333333}, {9.3672010633680555556}, {5.4041544596354166667}, {-9.0069240993923611111}}, {{-1.0808308919270833333}, {1.8013848198784722222}, {28.101603190104166667}, {-46.836005316840277778}, {-27.020772298177083333}, {45.034620496961805556}}, {{-0.15894571940104166667}, {0.26490953233506944444}, {4.1325887044270833333}, {-6.8876478407118055556}, {-3.9736429850260416667}, {6.6227383083767361111}}, {{0.79472859700520833333}, {-1.3245476616753472222}, {-20.662943522135416667}, {34.438239203559027778}, {19.868214925130208333}, {-33.113691541883680556}}});
               formfunctionpoly[25].set({{{-0.057220458984375}, {0.095367431640625}, {1.48773193359375}, {-2.47955322265625}, {-1.430511474609375}, {2.384185791015625}}, {{-0.286102294921875}, {0.476837158203125}, {7.43865966796875}, {-12.39776611328125}, {-7.152557373046875}, {11.920928955078125}}, {{0.21616617838541666667}, {-0.36027696397569444444}, {-5.6203206380208333333}, {9.3672010633680555556}, {5.4041544596354166667}, {-9.0069240993923611111}}, {{1.0808308919270833333}, {-1.8013848198784722222}, {-28.101603190104166667}, {46.836005316840277778}, {27.020772298177083333}, {-45.034620496961805556}}, {{-0.15894571940104166667}, {0.26490953233506944444}, {4.1325887044270833333}, {-6.8876478407118055556}, {-3.9736429850260416667}, {6.6227383083767361111}}, {{-0.79472859700520833333}, {1.3245476616753472222}, {20.662943522135416667}, {-34.438239203559027778}, {-19.868214925130208333}, {33.113691541883680556}}});
               formfunctionpoly[26].set({{{-0.057220458984375}, {0.286102294921875}, {0.21616617838541666667}, {-1.0808308919270833333}, {-0.15894571940104166667}, {0.79472859700520833333}}, {{-0.095367431640625}, {0.476837158203125}, {0.36027696397569444444}, {-1.8013848198784722222}, {-0.26490953233506944444}, {1.3245476616753472222}}, {{1.48773193359375}, {-7.43865966796875}, {-5.6203206380208333333}, {28.101603190104166667}, {4.1325887044270833333}, {-20.662943522135416667}}, {{2.47955322265625}, {-12.39776611328125}, {-9.3672010633680555556}, {46.836005316840277778}, {6.8876478407118055556}, {-34.438239203559027778}}, {{-1.430511474609375}, {7.152557373046875}, {5.4041544596354166667}, {-27.020772298177083333}, {-3.9736429850260416667}, {19.868214925130208333}}, {{-2.384185791015625}, {11.920928955078125}, {9.0069240993923611111}, {-45.034620496961805556}, {-6.6227383083767361111}, {33.113691541883680556}}});
               formfunctionpoly[27].set({{{-0.057220458984375}, {-0.286102294921875}, {0.21616617838541666667}, {1.0808308919270833333}, {-0.15894571940104166667}, {-0.79472859700520833333}}, {{-0.095367431640625}, {-0.476837158203125}, {0.36027696397569444444}, {1.8013848198784722222}, {-0.26490953233506944444}, {-1.3245476616753472222}}, {{1.48773193359375}, {7.43865966796875}, {-5.6203206380208333333}, {-28.101603190104166667}, {4.1325887044270833333}, {20.662943522135416667}}, {{2.47955322265625}, {12.39776611328125}, {-9.3672010633680555556}, {-46.836005316840277778}, {6.8876478407118055556}, {34.438239203559027778}}, {{-1.430511474609375}, {-7.152557373046875}, {5.4041544596354166667}, {27.020772298177083333}, {-3.9736429850260416667}, {-19.868214925130208333}}, {{-2.384185791015625}, {-11.920928955078125}, {9.0069240993923611111}, {45.034620496961805556}, {-6.6227383083767361111}, {-33.113691541883680556}}});
               formfunctionpoly[28].set({{{-0.057220458984375}, {-0.095367431640625}, {1.48773193359375}, {2.47955322265625}, {-1.430511474609375}, {-2.384185791015625}}, {{-0.286102294921875}, {-0.476837158203125}, {7.43865966796875}, {12.39776611328125}, {-7.152557373046875}, {-11.920928955078125}}, {{0.21616617838541666667}, {0.36027696397569444444}, {-5.6203206380208333333}, {-9.3672010633680555556}, {5.4041544596354166667}, {9.0069240993923611111}}, {{1.0808308919270833333}, {1.8013848198784722222}, {-28.101603190104166667}, {-46.836005316840277778}, {27.020772298177083333}, {45.034620496961805556}}, {{-0.15894571940104166667}, {-0.26490953233506944444}, {4.1325887044270833333}, {6.8876478407118055556}, {-3.9736429850260416667}, {-6.6227383083767361111}}, {{-0.79472859700520833333}, {-1.3245476616753472222}, {20.662943522135416667}, {34.438239203559027778}, {-19.868214925130208333}, {-33.113691541883680556}}});
               formfunctionpoly[29].set({{{-0.057220458984375}, {-0.095367431640625}, {1.48773193359375}, {2.47955322265625}, {-1.430511474609375}, {-2.384185791015625}}, {{0.286102294921875}, {0.476837158203125}, {-7.43865966796875}, {-12.39776611328125}, {7.152557373046875}, {11.920928955078125}}, {{0.21616617838541666667}, {0.36027696397569444444}, {-5.6203206380208333333}, {-9.3672010633680555556}, {5.4041544596354166667}, {9.0069240993923611111}}, {{-1.0808308919270833333}, {-1.8013848198784722222}, {28.101603190104166667}, {46.836005316840277778}, {-27.020772298177083333}, {-45.034620496961805556}}, {{-0.15894571940104166667}, {-0.26490953233506944444}, {4.1325887044270833333}, {6.8876478407118055556}, {-3.9736429850260416667}, {-6.6227383083767361111}}, {{0.79472859700520833333}, {1.3245476616753472222}, {-20.662943522135416667}, {-34.438239203559027778}, {19.868214925130208333}, {33.113691541883680556}}});
               formfunctionpoly[30].set({{{-0.057220458984375}, {-0.286102294921875}, {0.21616617838541666667}, {1.0808308919270833333}, {-0.15894571940104166667}, {-0.79472859700520833333}}, {{0.095367431640625}, {0.476837158203125}, {-0.36027696397569444444}, {-1.8013848198784722222}, {0.26490953233506944444}, {1.3245476616753472222}}, {{1.48773193359375}, {7.43865966796875}, {-5.6203206380208333333}, {-28.101603190104166667}, {4.1325887044270833333}, {20.662943522135416667}}, {{-2.47955322265625}, {-12.39776611328125}, {9.3672010633680555556}, {46.836005316840277778}, {-6.8876478407118055556}, {-34.438239203559027778}}, {{-1.430511474609375}, {-7.152557373046875}, {5.4041544596354166667}, {27.020772298177083333}, {-3.9736429850260416667}, {-19.868214925130208333}}, {{2.384185791015625}, {11.920928955078125}, {-9.0069240993923611111}, {-45.034620496961805556}, {6.6227383083767361111}, {33.113691541883680556}}});
               formfunctionpoly[31].set({{{-0.057220458984375}, {0.286102294921875}, {0.21616617838541666667}, {-1.0808308919270833333}, {-0.15894571940104166667}, {0.79472859700520833333}}, {{0.095367431640625}, {-0.476837158203125}, {-0.36027696397569444444}, {1.8013848198784722222}, {0.26490953233506944444}, {-1.3245476616753472222}}, {{1.48773193359375}, {-7.43865966796875}, {-5.6203206380208333333}, {28.101603190104166667}, {4.1325887044270833333}, {-20.662943522135416667}}, {{-2.47955322265625}, {12.39776611328125}, {9.3672010633680555556}, {-46.836005316840277778}, {-6.8876478407118055556}, {34.438239203559027778}}, {{-1.430511474609375}, {7.152557373046875}, {5.4041544596354166667}, {-27.020772298177083333}, {-3.9736429850260416667}, {19.868214925130208333}}, {{2.384185791015625}, {-11.920928955078125}, {-9.0069240993923611111}, {45.034620496961805556}, {6.6227383083767361111}, {-33.113691541883680556}}});
               formfunctionpoly[32].set({{{0.34332275390625}, {-1.71661376953125}, {-1.2969970703125}, {6.4849853515625}, {0.95367431640625}, {-4.76837158203125}}, {{-1.71661376953125}, {8.58306884765625}, {6.4849853515625}, {-32.4249267578125}, {-4.76837158203125}, {23.84185791015625}}, {{-1.2969970703125}, {6.4849853515625}, {4.8997667100694444444}, {-24.498833550347222222}, {-3.6027696397569444444}, {18.013848198784722222}}, {{6.4849853515625}, {-32.4249267578125}, {-24.498833550347222222}, {122.49416775173611111}, {18.013848198784722222}, {-90.069240993923611111}}, {{0.95367431640625}, {-4.76837158203125}, {-3.6027696397569444444}, {18.013848198784722222}, {2.6490953233506944444}, {-13.245476616753472222}}, {{-4.76837158203125}, {23.84185791015625}, {18.013848198784722222}, {-90.069240993923611111}, {-13.245476616753472222}, {66.227383083767361111}}});
               formfunctionpoly[33].set({{{0.34332275390625}, {-1.71661376953125}, {-1.2969970703125}, {6.4849853515625}, {0.95367431640625}, {-4.76837158203125}}, {{1.71661376953125}, {-8.58306884765625}, {-6.4849853515625}, {32.4249267578125}, {4.76837158203125}, {-23.84185791015625}}, {{-1.2969970703125}, {6.4849853515625}, {4.8997667100694444444}, {-24.498833550347222222}, {-3.6027696397569444444}, {18.013848198784722222}}, {{-6.4849853515625}, {32.4249267578125}, {24.498833550347222222}, {-122.49416775173611111}, {-18.013848198784722222}, {90.069240993923611111}}, {{0.95367431640625}, {-4.76837158203125}, {-3.6027696397569444444}, {18.013848198784722222}, {2.6490953233506944444}, {-13.245476616753472222}}, {{4.76837158203125}, {-23.84185791015625}, {-18.013848198784722222}, {90.069240993923611111}, {13.245476616753472222}, {-66.227383083767361111}}});
               formfunctionpoly[34].set({{{0.34332275390625}, {1.71661376953125}, {-1.2969970703125}, {-6.4849853515625}, {0.95367431640625}, {4.76837158203125}}, {{1.71661376953125}, {8.58306884765625}, {-6.4849853515625}, {-32.4249267578125}, {4.76837158203125}, {23.84185791015625}}, {{-1.2969970703125}, {-6.4849853515625}, {4.8997667100694444444}, {24.498833550347222222}, {-3.6027696397569444444}, {-18.013848198784722222}}, {{-6.4849853515625}, {-32.4249267578125}, {24.498833550347222222}, {122.49416775173611111}, {-18.013848198784722222}, {-90.069240993923611111}}, {{0.95367431640625}, {4.76837158203125}, {-3.6027696397569444444}, {-18.013848198784722222}, {2.6490953233506944444}, {13.245476616753472222}}, {{4.76837158203125}, {23.84185791015625}, {-18.013848198784722222}, {-90.069240993923611111}, {13.245476616753472222}, {66.227383083767361111}}});
               formfunctionpoly[35].set({{{0.34332275390625}, {1.71661376953125}, {-1.2969970703125}, {-6.4849853515625}, {0.95367431640625}, {4.76837158203125}}, {{-1.71661376953125}, {-8.58306884765625}, {6.4849853515625}, {32.4249267578125}, {-4.76837158203125}, {-23.84185791015625}}, {{-1.2969970703125}, {-6.4849853515625}, {4.8997667100694444444}, {24.498833550347222222}, {-3.6027696397569444444}, {-18.013848198784722222}}, {{6.4849853515625}, {32.4249267578125}, {-24.498833550347222222}, {-122.49416775173611111}, {18.013848198784722222}, {90.069240993923611111}}, {{0.95367431640625}, {4.76837158203125}, {-3.6027696397569444444}, {-18.013848198784722222}, {2.6490953233506944444}, {13.245476616753472222}}, {{-4.76837158203125}, {-23.84185791015625}, {18.013848198784722222}, {90.069240993923611111}, {-13.245476616753472222}, {-66.227383083767361111}}});
               break;
          default:
               std::cout << "Error in 'lagrangequadrangle' namespace: Lagrange form functions of order 6 and above not defined" << std::endl;
               abort();
               break;
     }

     return formfunctionpoly;
}